home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import rhythmdb
- import xml.sax as xml
- import xml.sax.handler as xml
- import datetime
-
- class TrackListHandler(xml.sax.handler.ContentHandler):
-
- def __init__(self, db, entry_type, sku_dict, home_dict, buy_dict, art_dict):
- xml.sax.handler.ContentHandler.__init__(self)
- self._TrackListHandler__db = db
- self._TrackListHandler__entry_type = entry_type
- self._TrackListHandler__sku_dict = sku_dict
- self._TrackListHandler__home_dict = home_dict
- self._TrackListHandler__buy_dict = buy_dict
- self._TrackListHandler__art_dict = art_dict
- self._TrackListHandler__track = { }
-
-
- def startElement(self, name, attrs):
- self._TrackListHandler__text = ''
-
-
- def endElement(self, name):
- if name == 'Track':
-
- try:
- if 'oggurl' in self._TrackListHandler__track:
- trackurl = self._TrackListHandler__track['oggurl']
- else:
- trackurl = self._TrackListHandler__track['url']
- entry = self._TrackListHandler__db.entry_lookup_by_location(trackurl)
- if entry == None:
- entry = self._TrackListHandler__db.entry_new(self._TrackListHandler__entry_type, trackurl)
-
-
- try:
- year = parse_int(self._TrackListHandler__track['year'])
- if year <= 0:
- raise ValueError
- year <= 0
- except ValueError:
- year = parse_int(self._TrackListHandler__track['launchdate'][0:4])
-
- date = datetime.date(year, 1, 1).toordinal()
-
- try:
- tracknum = parse_int(self._TrackListHandler__track['tracknum'])
- except ValueError:
- tracknum = 0
-
-
- try:
- duration = parse_int(self._TrackListHandler__track['seconds'])
- except ValueError:
- duration = 0
-
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_ARTIST, self._TrackListHandler__track['artist'])
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_ALBUM, self._TrackListHandler__track['albumname'])
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_TITLE, self._TrackListHandler__track['trackname'])
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_TRACK_NUMBER, tracknum)
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_DATE, date)
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_GENRE, self._TrackListHandler__track['mp3genre'])
- self._TrackListHandler__db.set(entry, rhythmdb.PROP_DURATION, duration)
- key = str(trackurl)
- sku = intern(str(self._TrackListHandler__track['albumsku']))
- self._TrackListHandler__sku_dict[key] = sku
- self._TrackListHandler__home_dict[sku] = str(self._TrackListHandler__track['home'])
- self._TrackListHandler__buy_dict[sku] = str(self._TrackListHandler__track['buy'].replace('buy_album', 'buy_cd', 1))
- self._TrackListHandler__art_dict[sku] = str(self._TrackListHandler__track['cover_small'])
- self._TrackListHandler__db.commit()
- except Exception:
- e = None
- print "Couldn't add %s - %s" % (self._TrackListHandler__track['artist'], self._TrackListHandler__track['trackname']), e
-
- self._TrackListHandler__track = { }
- elif name == 'AllSongs':
- pass
- else:
- self._TrackListHandler__track[name] = self._TrackListHandler__text
-
-
- def characters(self, content):
- self._TrackListHandler__text = self._TrackListHandler__text + content
-
-
-
- def parse_int(s):
- news = ''
- for c in s:
- if c in '0123456789':
- news += c
- continue
-
- return int(news)
-
-